ããä¿¡é Œæ§ã®é«ãå ç¢ãªç°å¢äºæž¬ã®ããã«ãæ°åã¢ããªã³ã°ã匷åããåã·ã¹ãã ã®åãæ¢æ±ããŸããå®çšçãªåã®å®è£ ãšãã®ç²ŸåºŠãšä¿å®æ§ãžã®åœ±é¿ã«ã€ããŠåŠã³ãŸãã
åå®å šãªæ°åã¢ããªã³ã°ïŒç°å¢äºæž¬ã¿ã€ãã®å®è£
æ°åã¢ããªã³ã°ã¯ãç°å¢å€åãçè§£ãäºæž¬ããããã«äžå¯æ¬ ãªãèšç®éã®å€ãããŒã¿éçŽåã®åéã§ãããããã®ã¢ãã«ã®ç²ŸåºŠãšä¿¡é Œæ§ã¯ããã®åºåãæ¿çæ±ºå®ãè³æºç®¡çæŠç¥ãããã³äžççãªé²çœã€ãã·ã¢ããã«æ å ±ãæäŸãããããæãéèŠã§ããåŸæ¥ã®æ°åã¢ããªã³ã°ã¯ãå€ãã®å ŽåãFortranãPythonãªã©ã®èšèªã§å®è£ ãããæ°å€çææ³ã«äŸåããŠããŸããããããã¯åŒ·åã§ããäžæ¹ã§ãããŒã¿åŠçãäžè²«æ§ã®ãªãåäœã«é¢é£ãããšã©ãŒãçºçããããå¯èœæ§ããããŸãã
ãã®ããã°æçš¿ã§ã¯ãåå®å šãªæ°åã¢ããªã³ã°ã®æŠå¿µãæ¢æ±ãã匷åãªåã·ã¹ãã ãå®è£ ããããšã§ãç°å¢äºæž¬ãœãããŠã§ã¢ã®å ç¢æ§ãšç²ŸåºŠãå€§å¹ ã«åäžãããããšãã§ãããã«çŠç¹ãåœãŠãŸããåå®å šæ§ã®å©ç¹ã«ã€ããŠæãäžããç°å¢äºæž¬ã¿ã€ããå®è£ ããããã®å®çšçãªã¢ãããŒãã«ã€ããŠèª¬æãããã®ãã©ãã€ã ã·ãããããä¿¡é Œæ§ãé«ãä¿å®å¯èœãªæ°åã¢ãã«ã«ã€ãªããå¯èœæ§ã®ããå®éã®äŸãæ€èšããŸãã
æ°åã¢ããªã³ã°ã«ããã粟床ãšä¿¡é Œæ§ã®éèŠæ§
æ°åã¢ãã«ã¯ã倧æ°ãæµ·æŽãéžå°è¡šé¢ãæ°·ãªã©ãå°çã®æ°åã·ã¹ãã ã®ããŸããŸãªã³ã³ããŒãã³ãéã®çžäºäœçšãã·ãã¥ã¬ãŒãããè€éãªãœãããŠã§ã¢ã·ã¹ãã ã§ãããããã®ã¢ãã«ã¯ã次ã®ç®çã§äœ¿çšãããŸãã
- å°æ¥ã®æ°åã·ããªãªã®äºæž¬ïŒæ°æž©å€åãæµ·é¢äžæãéæ°Žãã¿ãŒã³ã®å€åãäºæž¬ããŸãã
 - äººéæŽ»åã®åœ±é¿ã®è©äŸ¡ïŒæ°åã«å¯Ÿããæž©å®€å¹æã¬ã¹æåºã®åœ±é¿ãè©äŸ¡ããŸãã
 - æ¿ç決å®ãžã®æ å ±æäŸïŒæ°åå€åã®ç·©åãšé©å¿æŠç¥ã«é¢ããç§åŠç蚌æ ãæäŸããŸãã
 - æ°åå€åã®çè§£ïŒãšã«ããŒãã§ãã©ããŒãã£ãªã©ã®çŸè±¡ãç ç©¶ããŠãå£ç¯äºå ±ãæ¹åããŸãã
 
æ°åå€åã«äŒŽããªã¹ã¯ãé«ãããšãèãããšãã¢ãã«äºæž¬ã®å°ããªãšã©ãŒã§ãããé倧ãªçµæãããããå¯èœæ§ããããŸããäžæ£ç¢ºãªã¢ãã«ã¯ã次ã®ããšã«ã€ãªããå¯èœæ§ããããŸãã
- 誀ã£ãæ¿ç決å®ïŒå¹æã®ãªãããŸãã¯éå¹æã®æ°åæ¿çãžã®æè³ã
 - äžååãªé²çœïŒç°åžžæ°è±¡ã€ãã³ããäºæž¬ããŠæºåããããšã®å€±æã
 - çµæžçæå€±ïŒæ°åå€åã®åœ±é¿ã®ã³ã¹ãã®éå°è©äŸ¡ã
 - ç°å¢ç Žå£ïŒæå³ããªããã€ãã¹ã®çµæãããããç·©åæŠç¥ã®å®æœã
 
å ç¢æ§ãä¿èšŒããäžã§ã®åã·ã¹ãã ã®åœ¹å²
åã·ã¹ãã ã¯ãããã°ã©ãã³ã°èšèªã§ã®ããŒã¿åã®äœ¿ç𿹿³ã管çããäžé£ã®ã«ãŒã«ã§ããäºææ§ã®ããããŒã¿åã«å¯ŸããŠæäœãå®è¡ãããããã«ããããšã§ããšã©ãŒãé²ãã®ã«åœ¹ç«ã¡ãŸããããšãã°ãåã·ã¹ãã ã䜿çšãããšãæååãæ°å€ã«èª€ã£ãŠè¿œå ããããå§åå€ãæåŸ ãã颿°ã«æž©åºŠå€ãæž¡ãããããããšãé²ãããšãã§ããŸãã
åŸæ¥ã®æ°åã¢ãã«ã¯ãPythonã®ãããªåçåä»ãèšèªããŸãã¯åãã§ãã¯æ©èœãå¶éãããŠããFortranã®ãããªèšèªã«äŸåããŠããããšããããããŸãããããã®èšèªã¯æè»æ§ãšäœ¿ãããããæäŸããŸãããå®è¡æãŸã§æ€åºãããªãåé¢é£ã®ãšã©ãŒãçºçããããå¯èœæ§ããããŸããããã«ãããäºæããªãåäœãäžæ£ç¢ºãªçµæãã³ãŒãã®ãããã°ãšä¿å®ã®å°é£ã«ã€ãªããå¯èœæ§ããããŸãã
å¯Ÿç §çã«ãHaskellãRustããŸãã¯C++ã®ææ°ã®å®è£ ãªã©ã®åŒ·åãªåã·ã¹ãã ãåããéçåä»ãèšèªã¯ãããã°ã©ã ã§äœ¿çšãããããŒã¿ã®åã«é¢ããã³ã³ãã€ã«æã®ä¿èšŒãæäŸããŸããããã«ãããã³ã³ãã€ã©ã¯ããã°ã©ã ãå®è¡ãããåã«åãšã©ãŒãæ€åºã§ãããããã©ã³ã¿ã€ã ãšã©ãŒã®ãªã¹ã¯ã軜æžãããã³ãŒãå šäœã®ä¿¡é Œæ§ãåäžããŸãã
åå®å šãªæ°åã¢ããªã³ã°ã®å©ç¹
æ°åã¢ããªã³ã°ã«åå®å šæ§ãå®è£ ãããšãããã€ãã®éèŠãªå©ç¹ããããŸãã
- æ©æãšã©ãŒæ€åºïŒåãšã©ãŒã¯ã³ã³ãã€ã«æã«æ€åºããããããã©ã³ã¿ã€ã ã®é©ããé²ãããããã°æéãççž®ã§ããŸããããã¯ãã©ã³ã¿ã€ã ãšã©ãŒã®è¿œè·¡ãé£ããè€éãªã¢ãã«ã§ã¯ç¹ã«éèŠã§ãã
 - ã³ãŒãã®ä¿¡é Œæ§ã®åäžïŒåŒ·åãªåã·ã¹ãã ã¯ããŒã¿ã®äžè²«æ§ã匷å¶ããééã£ãããŒã¿åãŸãã¯åäœã«ãã£ãŠåŒãèµ·ãããããšã©ãŒã®ãªã¹ã¯ã軜æžããŸããããã«ãããããå ç¢ã§ä¿¡é Œæ§ã®é«ãã¢ãã«äºæž¬ãåŸãããŸãã
 - ã³ãŒãã®ä¿å®æ§ã®åäžïŒåã¢ãããŒã·ã§ã³ã¯ãã³ãŒãã®çè§£ãšä¿å®ã容æã«ãã貎éãªããã¥ã¡ã³ããæäŸããŸããããã¯ãè€æ°ã®éçºè ãšé²åããèŠä»¶ãé¢äžããé·æçãªæ°åã¢ããªã³ã°ãããžã§ã¯ãã«ãšã£ãŠéåžžã«éèŠã§ãã
 - çµæã«å¯Ÿããä¿¡é Œæ§ã®åäžïŒåé¢é£ã®ãšã©ãŒã®ãªã¹ã¯ã軜æžããããšã«ãããåå®å šæ§ã¯ã¢ãã«åºåã®ç²ŸåºŠãšä¿¡é Œæ§ã«å¯Ÿããä¿¡é Œãé«ããŸããããã¯ãæ¿ç決å®ãšè³æºç®¡çæŠç¥ã«æ å ±ãæäŸããããã«äžå¯æ¬ ã§ãã
 - ã³ãŒãã®ãªãã¡ã¯ã¿ãªã³ã°ã®ä¿é²ïŒåã·ã¹ãã ã䜿çšãããšãæ°ãããšã©ãŒãçºçãããããšãªãã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ãããããªããŸããã³ã³ãã€ã©ã¯ã倿Žãåå¶çŽã«éåããŠããªãããšãèªåçã«æ€èšŒã§ãããããã³ãŒãã®äžè²«æ§ãšæ£ç¢ºæ§ãç¶æãããŸãã
 
ç°å¢äºæž¬ã¿ã€ãã®å®è£ ïŒå®çšçãªã¢ãããŒã
æ°åã¢ããªã³ã°ã«åå®å šæ§ãå®è£ ããã«ã¯ãã¢ãã«ã§äœ¿çšãããç©çéãšå€æ°ãæ£ç¢ºã«è¡šãé©åãªããŒã¿åãå®çŸ©ããããšãäžå¯æ¬ ã§ããããã«ã¯ã次ã®ãã®ãå«ãŸããŸãã
1. ç©çéã®ã«ã¹ã¿ã ããŒã¿åã®å®çŸ©
ç©çéã衚ãããã«`float`ã`double`ã®ãããªæ±çšæ°å€åã䜿çšãã代ããã«ãéã®å€ãšããã«é¢é£ä»ããããåäœãã«ãã»ã«åããã«ã¹ã¿ã ããŒã¿åãå®çŸ©ããŸããäŸïŒ
// Rustã®äŸ
struct Temperature {
    value: f64,
    unit: TemperatureUnit,
}
enum TemperatureUnit {
    Kelvin,
    Celsius,
    Fahrenheit,
}
ãã®ã¢ãããŒãã«ãããæž©åºŠå€ãåžžã«æ£ããåäœã«é¢é£ä»ããããç°ãªã枩床ã¹ã±ãŒã«ãæ··åããããšã«ãã£ãŠåŒãèµ·ãããããšã©ãŒãé²ãããšãã§ããŸããåæ§ã«ãå§åã颚éãéæ°Žéãããã³ãã®ä»ã®é¢é£ããç©çéã®ã«ã¹ã¿ã ããŒã¿åãå®çŸ©ã§ããŸãã
2. åäœã©ã€ãã©ãªã®äœ¿çš
C++ã®Boost.UnitsãPythonã®Pintã®ãããªã©ã€ãã©ãªã¯ãç©çéãåäœãæ±ãããã®åŒ·åãªããŒã«ãæäŸããŸãããããã®ã©ã€ãã©ãªã䜿çšãããšã次å è§£æã䜿çšããŠèšç®ãå®è¡ããç°ãªãåäœéã§èªåçã«å€æããåäœã®äžäžèŽã«ãã£ãŠåŒãèµ·ãããããšã©ãŒãé²ãããšãã§ããŸãã
// Pythonã§Pintã䜿çšããäŸ
import pint
ureg = pint.UnitRegistry()
temperature = 25 * ureg.degree_Celsius
pressure = 1013 * ureg.millibar
# 枩床ãã±ã«ãã³ã«å€æ
temperature_kelvin = temperature.to(ureg.kelvin)
print(temperature_kelvin)
3. äŸååã®æŽ»çš
äŸååã䜿çšãããšãå€ã«äŸåããåãå®çŸ©ã§ããŸããããã¯ãä»ã®ããŒã¿å€ã«åºã¥ããŠããŒã¿ã«å¶çŽãé©çšããããã«äœ¿çšã§ããŸããããšãã°ã枬å®å Žæã«å¿ããŠéæ°Žéã®åãå®çŸ©ããã¢ãã«ãæå¹ãªå°ççå°åããã®éæ°ŽéããŒã¿ã®ã¿ã䜿çšããããã«ããããšãã§ããŸããIdrisãAgdaã®ãããªèšèªã¯äŸååãå®å šã«ãµããŒãããŠããŸãããRustãHaskellã®ãããªèšèªã§ã¯ããã€ãã®æ©èœããšãã¥ã¬ãŒãã§ããŸãã
4. ããŒã¿æ€èšŒã®å®è£
匷åãªåã·ã¹ãã ã䜿çšããŠããå Žåã§ããæ°åã¢ãã«ã§äœ¿çšããåã«ããŒã¿ãæ€èšŒããããšãéèŠã§ããããã«ã¯ãæ¬ æå€ãç¯å²å€ã®å€ãããã³ç°ãªãããŒã¿ãœãŒã¹éã®äžæŽåã®ãã§ãã¯ãå«ãŸããŸããããŒã¿æ€èšŒã¯ãã«ã¹ã¿ã æ€èšŒé¢æ°ãŸãã¯ããŒã¿æ€èšŒæ©èœãæäŸããã©ã€ãã©ãªã䜿çšããŠå®è£ ã§ããŸããäŸã«ã¯ãCerberusïŒPythonïŒããã³validator.jsïŒJavaScriptïŒãå«ãŸããŸãã
5. ãã¡ã€ã³åºæèšèªïŒDSLïŒã®äœæ
è€éãªæ°åã¢ãã«ã®å Žåãã¢ããªã³ã°ãã¡ã€ã³ã®ç¹å®ã®ããŒãºã«åãããŠèª¿æŽããããã¡ã€ã³åºæèšèªïŒDSLïŒã®éçºãæ€èšããŠãã ãããDSLã¯ãããé«ãã¬ãã«ã®æœè±¡åãæäŸããè€éãªã¢ãã«ããžãã¯ã衚çŸãããããããšã©ãŒã®ãªã¹ã¯ã軜æžããŸããDSLã¯ãããŒãµãŒã³ã³ãããŒã¿ãŒãSpoofaxã®ãããªèšèªã¯ãŒã¯ãã³ãããŸãã¯ã¡ã¿ããã°ã©ãã³ã°ææ³ã䜿çšããŠå®è£ ã§ããŸããç§åŠèšç®çšã®æ¢åã®DSLã®äŸã«ã¯ãæéèŠçŽ è§£æçšã®FEniCSãæ©æ¢°åŠç¿çšã®PyTorchããããŸãã
å®éã®äŸãšã±ãŒã¹ã¹ã¿ãã£
å®å šã«åå®å šãªæ°åã¢ãã«ã¯ãŸã æ°ãããã¬ã³ãã§ãããããã€ãã®ãããžã§ã¯ããšã€ãã·ã¢ãããã匷åãªåã·ã¹ãã ã䜿çšããŠç°å¢äºæž¬ã®ä¿¡é Œæ§ãšç²ŸåºŠãåäžãããããšã暡玢ããŠããŸããããã€ãã®äŸã次ã«ç€ºããŸãã
- NASA Global Modeling and Assimilation OfficeïŒGMAOïŒïŒGMAOã¯ãææ°ã®Fortranæ©èœããã®ä»ã®ææ³ã䜿çšããŠãå°çã·ã¹ãã ã¢ãã«ã®åå®å šæ§ãšä¿å®æ§ãåäžãããããšã暡玢ããŠããŸãã
 - Climate Modeling AllianceïŒCliMAïŒïŒCliMAã¯ãåå®å šæ§ãã¢ãžã¥ãŒã«æ§ãªã©ãææ°ã®ãœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ååã䜿çšããŠãæ°äžä»£ã®æ°åã¢ãã«ãéçºããããšãç®çãšãããããžã§ã¯ãã§ããããŒã ã¯ãã¢ãã«æ§ç¯ã«ãªãã·ã§ã³ã®åã¢ãããŒã·ã§ã³ãåãã髿§èœèšèªã§ããJuliaã®äœ¿çšãæ€èšããŠããŸãã
 - HaskellãšRustã䜿çšããç ç©¶ã°ã«ãŒãïŒããã€ãã®ç ç©¶ã°ã«ãŒããHaskellãšRustã䜿çšããŠãåå®å šãªæ°åã¢ããªã³ã°ã³ã³ããŒãã³ãã®éçºã詊ã¿ãŠããŸãããããã®èšèªã¯ããšã©ãŒãæžãããã³ãŒãã®ä¿å®æ§ãåäžãããã®ã«åœ¹ç«ã€åŒ·åãªåã·ã¹ãã ãšåŒ·åãªæœè±¡åãæäŸããŸãã
 
äŸïŒåçŽãªå€§æ°ã¢ãã«ã³ã³ããŒãã³ãã«Rustã䜿çšãã
Rustã䜿çšããŠåå®å šãªå€§æ°ã¢ãã«ã³ã³ããŒãã³ããå®è£ ããæ¹æ³ã®ç°¡åãªäŸãèããŠã¿ãŸãããã
use std::fmt;
// åäœä»ãã®å§åã®ã«ã¹ã¿ã åãå®çŸ©ãã
#[derive(Debug, Copy, Clone)]
struct Pressure {
    value: f64,
    unit: PressureUnit,
}
#[derive(Debug, Copy, Clone)]
enum PressureUnit {
    Pascal,
    HectoPascal,
}
impl Pressure {
    fn new(value: f64, unit: PressureUnit) -> Pressure {
        Pressure { value, unit }
    }
    fn to_pascal(&self) -> f64 {
        match self.unit {
            PressureUnit::Pascal => self.value,
            PressureUnit::HectoPascal => self.value * 100.0,
        }
    }
}
impl fmt::Display for Pressure {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "{} {:?}", self.value, self.unit)
    }
}
fn main() {
    let pressure1 = Pressure::new(1013.25, PressureUnit::HectoPascal);
    let pressure2 = Pressure::new(101325.0, PressureUnit::Pascal);
    println!("Pressure 1: {}", pressure1);
    println!("Pressure 2: {}", pressure2);
    let pressure1_pascal = pressure1.to_pascal();
    let pressure2_pascal = pressure2.to_pascal();
    println!("Pressure 1 in Pascal: {}", pressure1_pascal);
    println!("Pressure 2 in Pascal: {}", pressure2_pascal);
}
ãã®äŸã§ã¯ã`value`ãš`unit`enumãæã€ã«ã¹ã¿ã ã®`Pressure`æ§é äœãå®çŸ©ããŸãã`to_pascal`ã¡ãœããã¯ãå§åå€ããã¹ã«ã«ã«å€æããèšç®ã«äžè²«ããåäœãä¿èšŒããŸããRustã®åŒ·åãªåã·ã¹ãã ã¯ãç°ãªãå§ååäœãæ··åããããšã«ãã£ãŠåŒãèµ·ãããããšã©ãŒãé²ãã®ã«åœ¹ç«ã¡ãŸãã
課é¡ãšèæ ®äºé
åå®å šãªæ°åã¢ããªã³ã°ã¯å€§ããªå©ç¹ããããããŸãããçæãã¹ã課é¡ãšèæ ®äºé ããããŸãã
- åŠç¿æ²ç·ïŒæ°ããããã°ã©ãã³ã°èšèªãšåã·ã¹ãã ãæ¡çšããã«ã¯ãFortranãPythonã®ãããªåŸæ¥ã®èšèªã«æ £ããŠããæ°åã¢ãã©ãŒã«ãšã£ãŠã倧ããªåŠç¿æ²ç·ãå¿ èŠã«ãªãå ŽåããããŸãã
 - ããã©ãŒãã³ã¹ã®ãªãŒããŒãããïŒåŒ·åãªåã·ã¹ãã ã¯ãç¹ã«èšç®éã®å€ãã·ãã¥ã¬ãŒã·ã§ã³ã§ãããã©ãŒãã³ã¹ã®ãªãŒããŒããããããããå ŽåããããŸãããã ããææ°ã®æé©åã³ã³ãã€ã©ã¯ããã®ãªãŒããŒãããã軜æžã§ããããšããããããŸãã
 - çžäºéçšæ§ïŒåå®å šãªã³ãŒããæ¢åã®ã¬ã¬ã·ãŒã³ãŒããšçµ±åããããšã¯é£ããå ŽåããããŸããã·ãŒã ã¬ã¹ãªçžäºéçšæ§ã確ä¿ããã«ã¯ãæ éãªèšç»ãšèšèšãå¿ èŠã§ãã
 - ããŒã¿ã®å¯çšæ§ïŒããŒã¿ãœãŒã¹ãæ£ç¢ºã§åä»ããããããŒã¿ãæäŸããããšã¯ãåå®å šãªæ°åã¢ããªã³ã°ã®æåã«ãšã£ãŠéåžžã«éèŠã§ãã
 
çµè«ïŒããä¿¡é Œæ§ã®é«ãç°å¢äºæž¬ã«åããŠ
åå®å šãªæ°åã¢ããªã³ã°ã¯ãç°å¢äºæž¬ãœãããŠã§ã¢ã®ä¿¡é Œæ§ã粟床ãããã³ä¿å®æ§ãåäžãããããã®ææãªã¢ãããŒãã§ãã匷åãªåã·ã¹ãã ãšæ éãªããŒã¿æ€èšŒã掻çšããããšã§ããšã©ãŒã®ãªã¹ã¯ã軜æžããã¢ãã«åºåã«å¯Ÿããä¿¡é Œãé«ããæçµçã«ã¯æ°åå€åã®ç·©åãšé©å¿ã«é¢ããããå€ãã®æ å ±ã«åºã¥ããæææ±ºå®ãè¡ãããšãã§ããŸãã課é¡ã¯æ®ã£ãŠããŸãããæ°åã¢ããªã³ã°ã«ãããåå®å šæ§ã®æœåšçãªå©ç¹ã¯å€§ããããã®åéã«ããããããªãç ç©¶éçºãä¿èšŒãããŠããŸãã
æ°åã¢ãã«ã®è€éããå¢ãç¶ããã«ã€ããŠãå ç¢ã§ä¿¡é Œæ§ã®é«ããœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ã®å®è·µã®å¿ èŠæ§ããŸããŸãéèŠã«ãªã£ãŠããŸããåå®å šæ§ã¯ãããä¿¡é Œæ§ãé«ã广çãªç°å¢äºæž¬ã·ã¹ãã ãæ§ç¯ããããã®ç§ãã¡ã®æŠåšåº«ã®äžå¯æ¬ ãªããŒã«ã§ãããå€åããæ°åã®èª²é¡ãããããçè§£ãã察åŠããã®ã«åœ¹ç«ã¡ãŸãã
ãããªãæ¢æ±
åå®å šãªããã°ã©ãã³ã°ãšæ°åã¢ããªã³ã°ã®ãããªãæ¢æ±ã®ããã®ãªãœãŒã¹ã次ã«ç€ºããŸãã
- åã·ã¹ãã ãšããã°ã©ãã³ã°èšèªïŒBenjamin C. PierceèãTypes and Programming Languagesã
 - Rustããã°ã©ãã³ã°èšèªïŒhttps://www.rust-lang.org/
 - Haskellããã°ã©ãã³ã°èšèªïŒhttps://www.haskell.org/
 - Climate Modeling AllianceïŒCliMAïŒïŒhttps://clima.caltech.edu/
 - Boost.UnitsïŒC++ïŒïŒhttps://www.boost.org/doc/libs/1_83_0/libs/units/doc/html/index.html
 - PintïŒPythonïŒïŒhttps://pint.readthedocs.io/en/stable/
 
åå®å šæ§ãšææ°ã®ãœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ã®å®è·µãåãå ¥ããããšã§ãå°çãçŽé¢ããŠããç·æ¥ã®ç°å¢åé¡ã«å¯Ÿãã广çãªãœãªã¥ãŒã·ã§ã³ã«æ å ±ãæäŸãããããæ£ç¢ºã§ä¿¡é Œæ§ã®é«ãæ°åã¢ãã«ãžã®éãéãããšãã§ããŸãã